package com.info33.platform.system.dic.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.info33.platform.system.dic.dto.SysDicDTO;
import com.info33.platform.system.dic.entity.SysDic;
import com.info33.platform.system.dic.vo.SysDicVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 系统 - 字典 v2
 *
 * @author nyj2one
 * @since 2022-11-23 11:08:40
 */
@Repository
public interface SysDicDao extends BaseMapper<SysDic> {

    /**
     * 根据入参获取分页数据
     *
     * @param page 分页对象
     * @param dto  入参
     * @return vo
     */
    IPage<SysDicVO> pcPage(
            @Param("page") Page<SysDic> page,
            @Param("dto") SysDicDTO dto);

    /**
     * 树结构
     *
     * @param modIndex -
     * @param tenantId -
     * @return -
     */
    List<SysDicVO> pcTree(
            @Param("modIndex") String modIndex,
            @Param("tenantId") Long tenantId);

    /**
     * 树结构转换为列表
     *
     * @param modIndex -
     * @return -
     */
    List<SysDicVO> pcList(
            @Param("modIndex") String modIndex,
            @Param("tenantId") Long tenantId);

    /**
     * 获取多个索引的字典列表
     *
     * @param modIndexes -
     * @return -
     */
    List<SysDicVO> pcListByMods(
            @Param("modIndexes") String modIndexes);

    /**
     * 根据 ids 获取字典的 key 组合字符
     *
     * @param ids -
     * @return 英文逗号分割，根据 id 顺序排序
     */
    String getKeysByIds(
            @Param("ids") String ids);

    /**
     * 根据 ids 获取字典的集合
     *
     * @param ids -
     * @return -
     */
    List<SysDicVO> listByIds(
            @Param("ids") String ids);

    /**
     * 列表
     *
     * @param dto -
     * @return -
     */
    List<SysDicVO> openList(
            @Param("dto") SysDicDTO dto);

    /**
     * 树结构
     *
     * @param dto -
     * @return -
     */
    List<SysDicVO> openTree(
            @Param("dto") SysDicDTO dto);

    /**
     * 获取多个索引的字典列表
     *
     * @param dto        -
     * @param modIndexes -
     * @return -
     */
    List<SysDicVO> openListByMods(
            @Param("dto") SysDicDTO dto,
            @Param("modIndexes") String modIndexes);

}
